#include <iostream>
#include <vector>
using namespace std;
#define int long long
vector<int> add(const vector<int> &A, const vector<int> &B)
{
    vector<int> C;
    int t = 0;
    for (int i = 0; i < A.size() || i < B.size(); i++)
    {
        int a = i < A.size() ? A[i] : 0;
        int b = i < B.size() ? B[i] : 0;
        int f = a + b + t;
        C.push_back(f % 10);
        t = f / 10;
    }
    if (t)
    {
        C.push_back(t);
    }
    return C;
}
vector<vector<int>> sum;
signed main()
{
    int m, n;
    cin >> m >> n;
    sum.push_back({0});
    sum.push_back({1});
    for (int i = 2; i <= n - m + 1; i++)
    {
        vector<int> temp = {0};
        sum.push_back(add(sum[i - 1], temp));
        if (i - 2 >= 1)
        {
            sum[i] = add(sum[i], sum[i - 2]);
        }
    }
    for (int i = sum[n - m + 1].size() - 1; i >= 0; i--)
    {
        cout << sum[n - m + 1][i];
    }
    return 0;
}

// vector<int> add(const vector<int>& A, const vector<int>& B) {
//     vector<int> C;
//     int f = 0;
//     for(int i = 0; i < A.size() || i < B.size(); i++) {
//         int a = i < A.size() ? A[i] : 0;
//         int b = i < B.size() ? B[i] : 0;
//         int t = a + b + f;
//         C.push_back(t % 10);
//         f = t / 10;
//     }
//     if(f) {
//         C.push_back(f);
//     }
//     return C;
// }